Программы
Книги
Статьи

27_img

PIC-микрокоптроллеры. Практика применения

В качестве примеров предлагаются несколько конкретных устройств, в том числе часы-будильник и многоканальный цифровой вольтметр.


Скачать книгу  

Описание

Тавернье К.
Т13 PIC-микрокоптроллеры. Практика применения: Пер. с фр. -М.: ДМК
Пресс, 2004. - 272 с: ил. (Серия «Справочник»).
ISBN 5-94074-100-2
В книге прслставлена инфор.\1ация о технических и программных
средствах разработки приложений на 6a;je РЮ-мпкроконтроллеров.
Приведена коллекция схемных и программных решений, iaicaK>iiuixcfl
взаимодействия Р1С-микроконтроллероп с пот'лярнон периферией,
реализации типовых интерфейсов, с которы.ми вы може ге столкнуть-
ся в своих разработках. Рассмот{>ены .многочисленные примеры про-
гр-аммной реа.Л11зации са.мых различных функций: организация пре-
рываний, подпрограммы расширенной арифметики, арифметики с
плаваюп1ей запят()й и т.д.
В качестве примеров предлагаются несколько конкретных
устройств, в том числе часы-будильник и многоканальный цифровой
вольтметр.
Отдельная глава книги посвящена описанию и возможностям ис-
пользования платы STAMP фирмы Parallax, которая построена на базе
Р1С-микроконгроллера, программируемого на Ba.sic и ориенти-
рованного на устройства автоматизац1Н1.
Книга адресована студентам, специалистам и любителям электро-
ники, занимаю1цимся разработкой микроконтроллерных устройств.
Все праиа защищены. Любая часть этой кннгм не может быть воспро-
изведена в какой бы то пи было форме и какими бы то ни было средства-
ми без HiiCbMeinioro разрешения владельцев авторских прав.
Материал, изложе1П1ый в данной книге, многократно проверен. Но,
поскольку вероятность технических ошибок все равно существует, изда-
течьстио пе может гарантировать абсолютную точность и прави1Ьность
приводимых сведении. В связи с этим издательство не несет ответствен-
постм за возможные ошибки, связанные с использованием книги.
ISBN 2-10-002866-9 (фр.)
ISBN 5-94074-100-2 (рус.)
© OUNOD, Paris © Перево! на
русский язык, оформление ДМК
Пресс. 2003


СОДЕРЖАНИЕ
ПРЕДИСЛОВИЕ 9
ГЛАВА 1
PIC-МИКРОКОНТРОЛЛЕРЫ 16СХХ 11
МИКРОКОНТРОЛЛЕРЫ ПОДСЕМЕЙСТВА PIC 16СХХ 12
ОБЩИЕ ХАРАКТЕРИСТИКИ 13
Питание Р1С-микроконтроглвров 13
Токтировоние РЮ-микроконтроллеров 13
Схемы сбросе 17
Порты ввода/вывода 18
БАЗОВЫЕ СХЕМЫ 19
ГЛАВА 2
РАЗРАБОТКА ПРИЛОЖЕНИЙ 2i
ВЫБОР МИКРОКОНТРОЛЛЕРА 22
АССЕМБЛЕР ИЛИ ЯЗЫКИ ВЫСОКОГО УРОВНЯ 23
СИСТЕМА РАЗРАБОТКИ 24
Ассемблер и компилятор языко высокого уровня 24
Эмулятор и симулятор 25
РАЗРАБОТКА ПРОГРАММНОГО ОБЕСПЕЧЕНИЯ
ДЛЯ ПРОМЫШЛЕННОГО ПРИМЕНЕНИЯ 27
СРЕДСТВА РАЗРАБОТКИ ФИРМЫ MICROCHIP 28
Системы Picstort-16b и Picstort-16c 29
Прогроммное обеспечение розроботки 30


ид PIC-МИКРОКОНТРОЛЛЕРЫ. ПРАКТИКА ПРИМЕНЕНИЯ
СИНТАКСИС АССЕМБЛЕРА MPALC 35
АССЕМБЛЕР PASM 37
СРЕДСТВА РАЗРАБОТКИ ФИРМЫ PARALLAX 39
Псевдоэмулятар Retlection-5X 46
Эмуляторы CleorView 5Х и CleorView XX 48
ГЛАВА 3
СХЕМНЫЕ РЕШЕНИЯ
ИНТЕРФЕЙСОВ МИКРОКОНТРОЛЛЕРОВ 49
ПАРАЛЛЕЛЬНЫЕ ВЫХОДЫ 50
Управление светодиодоми и оптрономи 50
Упровление реле 54
Прямое упровление погрузкой,
питающейся от источнико постоянного нопряжения 55
Упровление светодиодным цифровым индикотором 56
Упровление индикотороми но Жидких кристоллох 69
ПАРАЛЛЕЛЬНЫЕ ВХОДЫ 86
Кнопки и переключотели 86
Гальвоническоя розвязкс входов 88
Кловиотуры 89
Вывод из sleep-режимо с помощью кловиотуры 93
КОМБИНИРОВАННОЕ ИСПОЛЬЗОВАНИЕ ПОРТОВ 101
ВНЕШНЯЯ ПЕРИФЕРИЯ 110
Стондортноя периферия 111
Взоимодействие с периферией
по последовательному интерфейсу 113
ЭНЕРГОНЕЗАВИСИМАЯ ПАМЯТЬ
С ПОСЛЕДОВАТЕЛЬНЫМ ИНТЕРФЕЙСОМ 114
УПРАВЛЕНИЕ АНАЛОГО-ЦИФРОВЫМ ПРЕОБРАЗОВАТЕЛЕМ 120
ЗАКЛЮЧЕНИЕ 122
ГЛАВА 4
БИБЛИОТЕКА ПРОГРАММ 12з
АРИФМЕТИЧЕСКИЕ ПОДПРОГРАММЫ 124
Беззноковое умножение 8-розрядных чисел 125
Знаковое и беззнаковое умножение ) 6-разрядных чисел 129


СОДЕРЖАНИЕ шиш
Деление 16-розрядных чисел 136
Сложение и вычитание 16-розрядных чисел 144
Опероции с плавающей зопятой 146
Преоброзование двоично-десятичных кодов в двоичные 15б
Преоброзовоние двоичных кодов в двоично-десятичные 159
Сложение и вычитоние чисел в двоично-десятичных кодох )63
ПРОГРАММНАЯ РЕАЛИЗАЦИЯ ПРЕРЫВАНИЙ
МИКРОКОНТРОЛЛЕРОВ 16С5Х ) 68
ПРИНЦИП МНОГОЗАДАЧНОСТИ 172
РАСШИРЕНИЕ СТЕКОВОЙ ПАМЯТИ МИКРОКОНТРОЛЛЕРОВ 16С5Х 175
ПЕРЕДАЧА АСИНХРОННОЙ ПОСЛЕДОВАТЕЛЬНОСТИ
ПРИ ОТСУТСТВИИ ПОСЛЕДОВАТЕЛЬНОГО ПОРТА 178
ГЛАВА 5
ГОТОВЫЕ РЕШЕНИЯ i85
ЧАСЫ С БУДИЛЬНИКОМ 186
РЕАЛИЗАЦИЯ ШИНЫ 1'С 215
Общие лоложения 216
Принцип обмено донными 216
Форматы передочи 2) 9
Схемо реолизации интерфейсо 1'С 220
ЧЕТЫРЕХКАНАЛЬНЫИ ВОЛЬТМЕТР СО СВЕТОДИОДНОЙ ИНДИКАЦИЕЙ ...232
МИКРОКОМПЬЮТЕР, ПРОГРАММИРУЕМЫЙ НА BASIC 244
ГЛАВА 6
МИКРОКОНТРОЛЛЕР STAMP 245
ОБЩИЕ ПОЛОЖЕНИЯ 246
СИСТЕМА РАЗРАБОТКИ 247
Схемо плоты Stomp 247
Прогроммная средо розроботки 250
ЯЗЫК ПРОГРАММИРОВАНИЯ PBASIC 250
Операторы упровления портоми вводо/выводо 252
Операторы для упровления последовотельным вводом/выводом 253
Упровление анопоговыми величинами 253
Прочие опероторы 253


ид PIC-МИКРОКОНТРОЛЛЕРЫ. ПРАКТИКА ПРИМЕНЕНИЯ
ПРИМЕРЫ ПРИМЕНЕНИЙ 255
Анолого-цифровое преобразовоние 255
Управление шоговыми двиготелями 259
Интерфейс кловиатуры и индикоторо но жидких кристоллох 264
ПРИЛОЖЕНИЕ 269
ФАЙЛ ИДЕНТИФИКАТОРОВ 269


ПРЕДИСЛОВИЕ
Желание написать кпиг)\ посвященную применению целого класса
микроконтроллеров, может показаться высокомерным. Действительно,
поскольку эти компоненты программируемы, они способны выполнять «псе
пожелания» пользователя, благодаря чему широко применяются в самых
разных сферах. Какой бы объемно!! ini была KHin'a, в ней невозможно
paccKiuaTb обо всех ре11лизуемы\ приложениях с такими
микроконтроллерами. Поэтому мы рсшичи naini-сать не c6opiHiK готовых
приложений, которые, как показывает oiHiir, редко отвечают потребностям
болыпипства пользователей, а пособие, по.могающес читателю
самостоятельно р11зра6атывать соб-CTBcinn.ie проекты.
Для того чтобы знакомство с нредлагаемо!"! 1П1формац11ей было
па!1более эффскт1!Н11Ым. мы струк1урнропали К!П1Г\' слелую1!П1М об-
разом:
? U главе 1 коротко рассказано об арх!1тектурс РКП-микроконтроллеров
фи]).мы .Microchip. Даны сравнительные характеристики
микроконтроллеров f еме1"1ства, приводятся схемные решения,
касающиеся подключения п!1тапия, так гирования работы м!1к-
ро1«>птроллеравпе111Н!1ми и внутренними 1'енерат11троллероп, однако знакомогво с H!1M!I
позволит вам быстро ре;ип1зопать собственные н риложен И5Г,


PIC-МИКРОКОНТРОЛЛЕРЫ. ПРАКТИКА ПРИМЕНЕНИЯ


? в главе 4 представлена библиотек!! стандартных программ. При-
веденные арифметические алгоритмы широко используются во многих
приложениях. Их реализация, oCooeinio на ассемблс|:)е, по плечу
только опытным пользователям микроконтроллеров;
? в главе 5 описаны три актуальных приложения. Используемые в них
решения не рассматривались в предыдуацих главах;
? наконец, в главе 6 рассказывается об оригинальном продукте Stamp
фирмы Parallax - программируемом Р1С-микрокоптрол-лере 16С56,
интерпретирующем язык Basic, и дано несколько примеров его
применения. Эта глава будет особенно интересна тем, кто предпочитает
не пользоваться машинным языком.
ПРИНЯТЫЕ СОКРАЩЕНИЯ
Для удобства работы с книгой приняты следующие обозначения:
? наиболее важные понятия и основные термины выделены ку{у-сивом;
? листинги, а также названия регистров, перемент.1х и т. д.,
встречающихся в тексте, набраны моноширинным шрифтом.


ГЛАВА 1
' I
Р1С-МИКР0К НТРОЛЛЕРЫ 16СХХ
в этой главе:
Микроконтроллеры подсемейава PIC16CXX Общие характеристики
Базовые схемы


PIC-МИКРОКОНТРОЛЛЕРЫ 16СХХ


ОБЩИЕ ХАРАКТЕРИСТИКИ





Эта книга посвящена, главным образом, применению Р1С-мик-
роконтроллеров подсемейства 16СХХ. Но чтобы дальнейшее изложение
было понятно всем читателям, имеет смысл коротко напомнить об общих
особенностях архитектуры семейства.
Детальное описание всех микросхем семейства вы сможете найти в
каталогг1Х фирмы .Microchip и па се сайте.
МИКРОКОНТРОЛЛЕРЫ ПОДСЕМЕЙСТВА PIC 16СХ
В насгоящее время сущее гвуют несколько подсемейств Р1С-мпкро-
контроллеров, каждое из которых включает множество различных типов. В
данной книге рассматриваются два подсемейства, их состав и основные
характеристики даны в т-абл. 1.1. Наиболее известно младшее
подсеме1"1ство 16С5Х, включающее архитскг)рно самые простые модели
Р1С-микроконтроллероп, которые используются в недорогих приборах, где
они с успехом заменяют множество микросхем средней степени интеграции.
В состав данно1о нодсеме1"1ства входят микроконтроллеры пяти типов,
имеющие варианты по тактовой частоте и тину программного
запоминающего устройства. Все микросхемы 16С5Х имеют одну и чу же
в1Г)Треннюю архи гектуру, но отличаются объемом оперативной и
программной памяти (ОЗУи ПЗУ) и количеством портов в вода/ вывода.
Второе подсемейство, занимающее верхнюю часть табл. 1.1, ква-
лифицируется фирмо!! Microchip как среднее. В настоящее время в него
входят четыре типа микросхем, по подсемейство развивается, и сейчас
готовятся к выписку новые типы.
По архитект)'рным концепциям и системе команд данное подсемейство
очень близко к подсемейству 16С5Х, но располагает более широкими
BiryrpeiiHHMH аппаратными ресурсами. Микроконтроллеры данного
подсемейства имеют, в час гности, несколько последовательных
интерфейсов, а также содержат многоканальные аналого-цифровые
преобразователи.
Оба подсемейства имеютпримерно одинаковую область применения.
Однако каж;;ое приложение, описанное в данной книге, ориентировано
только па одно из подсемейств. Так, програ.ммная реализация
последовательного асинхронного интерфейса более акт)'альна для
подсемейства PIC 16С5Х, которое не располагает данным аппарат урпым
ресурсом, и coiicpmeiHio не нужна, например, для PIC 16С74, имеющего
встроенный высокоскоростной последовательный интерфейс.


ОБЩИЕ ХАРАКТЕРИСТИКИ
PlC-микрокоптроллеры подсемейства 1 бСХХ имеют сходные схемы
подключения к питанию, тактирования и сброса.
Питание Р1С-микроконтроллеров
У всех PIC-микроконтроллеров есть два вывода пит-ания V^^ и V^j,:
? Vjj. - общи11 («Miniyc» питания);
? V,„, - «плюс» нитанпя.
Для микроконтроллеров I6C5X величина напряжения 1П1тания может
составлять от +3 до +6,25 В. Для PIC 16СХХ диапазон пит-аю-щих
напряжений не тлк широк: от +4 до +6 В.
Питание Р1С-микроко1Ггроллеров любых типов, тактируемых от
встроенного высокочастотного генератора (вариант HS), осуществляется
напряжсшгем от +4,5 до +5,5 В. В sleep-режимс В1гутрспнее ОЗУ сохраняет
свое содержимое при напряжении питания 1,5 В.
Чтобы устранить высокочастотные пульсации но питанию, применяют
многослойный керамический конденсатор емкостью не менее 0,1 мкФ,
которы11 монтируется как можно ближе к корпусу микросхемы.
Если напряжение питания наход1Ггся в пределах норм, установленных для
ИС' 'Г 171 (от 4,75 до 5,2."S В), то и уровни на входах/выходах PIC-
микроконтроллеров будут соответствовать уровням Т ГЛ.
Тактирование PIC-микроконтроллеров
У всех микросхем подсемейства PIC 16СХХ имеются два вывода,
предиазначепные для тактирования их работы: OSC1 (CLKIN) и OSC2
(CLKOUT). Для тактирования могут использоваться генераторы нескольких
типов.
В версиях микросхем Р1С> Ш(^ХХ с ультрафиолетовым и электрическим
стиранием тип тактового генератора задается программированием
соответствующих битов конфигурационного слова (особого регистра,
доступного только во время программирования микросхемы). Для одной и
той же микросхемы может быть задан или кварцевый, или RC-геператор.
Что кг1сается однократно программируемых (ОТР - One-Time-
Programmablc) версий микросхем, то для них тип тактового генератора
выбирается при заказе или пок) икс. В маркировке Р1С-М1Пми1Срокоп-троллерами.
Описать все средства невозможно, поскольку I'lC-микроконтроллеры
используются практически повсеместно и множество фирм, иногда очепь
маленьких и мало знакомых ишрокой публике, предлагают продукты в этой
области. Поэтому обзор ограничивается сисгемами, предложенными
фирмами Microcliip и Parallax, которые располагают многочисленными,
шюгда весьма оригинальными иродукга.\н1.
АССЕМБЛЕР ИЛИ ЯЗЫКИ ВЫСОКОГО УРОВНЯ
Разработка любой компьютерной профаммы может быть осуществлена с
помощью языка низкого уровня (машинного язык:), ассемблера) или языка
высокого уровня (С, Basic, Pascal). Для РЮ-микроконт-роллеров, и особенно
входящих в 1Юдсемейство PIC 16СХХ, ассемблер - самое лучшее решение,
даже если он кажется более трудным в применении.
Действительно, размер памяти, достунньп"! программе в мик-
роконтроллерах этого подсемейства, относительно мал (от 512 до 4 К слов),
что делает невозможным размещение большой программы. Программа,
написанная на ассемблере, требует минимального объема памяти и позволяет
реализовать максимальное количество функций. Напротив, если она создана
на языке высокого уровня, то в памяти микроконтроллера может храниться
код, соответствующий всего лишь нескольким десяткам или сотням опе-
раторов языка.
В таких языках, как С, Basic или Pascal, имеется множество типов
переменных и обрабатывающих их операторов, что позволяет писать очень
компактные исходные тексты программ. Ио даже самый простой оператор на
языке высокого уровня при компиляции


РАЗРАБОТКА ПРИЛОЖЕНИЙ


СИСТЕМА РАЗРАБОТКИ





генерирует несколько десятков команд машинного языка, из-за чего
дост\Т1пая память заполняется очень быстро.
Язык высокого уровня целесообразно использовать для лп1кро-
контроллеров с большим объемом памяти, или в тех случаях, когда время,
отведенное на разработку приложения, очень ограничено. Конечно, для этого
необходимо знание соответствующего языка. Но лучше обратитесь к главам 3
и 4 настоящей книги, где описаны 35 команд Р1С-микроконтроллсров и
основы ассемблера. Вы убедитесь, что этих знаний вполне достаточно для
нннисания программы.
СИСТЕМА РАЗРАБОТКИ
Некоторые понятия, относящиеся к системам разработки п соответ-
ствующему программному обеспечению, воспринимаются доста гоч-но
трудно, поэтому имеет смысл напомнить читателям основные термины.
Ассемблер и компилятор языка высокого уровня
Комплекс разработки всегда включает как минимум ассемблер и иногда один
или несколько компиляторов языков высокого, которые использ)тотся для
программирования.
Ассемблер перевод! IT мнемокоды команд маппнгпого языка в двоичные
(6iHiapHbie) К01Ы, исполняемые Р1С-микроконтроллером. Текст с
Последовательностью мнемокодов называется листингом, или исходным
коЭожпрограммы, в то время как бинарньн! код называется объектпъич, или
исполняемъил.
Компилятор переводит операции, операторы и другие конструкции языка
высокого уровня, образующие исходный текст программы, в исполняемый
бинарный код Р1С-микроконтроллера.
В хорошо продуманной системе (среде) разрабсп'ки обе программы,
ассемблер и компилятор, могут сосуществовать раздельно или
использоваться вмес гс. Это Позволяет строить сложиь1е ал горитмы на
языке высокого уровня, а те программные модули, которые требуют высокой
производительности или предназначены для управления периферией через
порты ввода/вывода {драйверы), писать па ассемблере. Очень важно, чтобы
компилятор языка высокого уровня допускал ислючение программных
сегмсхггов па ассемблере.
Эти обе программы, ассемблер и/или компилятор, должны обязательно
«прогоняться» на так называе\юм xocm-KOJHWMOWK^. В таком


качестве может выступать практически любая машина: специализированная
система производителя Р1С-микроконтроллеров (все более и более редкий
случай, так как это очень дорого), мопщая ЭВМ (VAX, рабочая станция Sun,
АроНо luni HP и т.п.) или просто, и это становится правилом, IBM
совместимый ПК. Последний вариант позволяет уменьшить
канита.'ювложепия, поскольку наверняка уже имеется I ИМ совместимый
компьютер, используемьи! для других целей.
11аписав программу на ассемблере или языке высокого уровня и проведя
компиляцию, вы получаете исполняемый бинарный код. Однако прежде чем
тиражировать созданное приложение, надо тщательно его протестировать.
Чтобы обеспечить полный контроль. Программа должна тестироваться в
условиях, максимально близких кусловиям будущего реального
использования. Для этого су1цествуст HecKOjibKo Возможных решений.
Эмулятор и симулятор
Первое решение, которое являе гея самым эффективным, но также, увы, и
наиболее дорогостоящим, - приобрести специальную аппара-ту-ру. На рис.
2.1 показано одно из таких устройств. Аппаратный эмулятор, составляющий
«сердце» этой системы, фактически представ-лясгсобон специальное
устройство, иногда очень сложное, которое выполняет все функции Р1С-
микрокоптроллера и заменяет его. На рисунке представлена «разрозпенпая»
версия, то есть версия, в которой все внутренние компоненты Р1С-
мнкроконтроллсра реализованы в виде отдельных схем.
Этот эмулятор снабжен специальным соединительным шлейфом,
называемым зондом эмуляции, на конце которого есть разъем, аналогичный
выводам корпуса РЮ-микроконтроллера. С помощью шлейфа эмулятор
подключается к макету приложен! 1я вместо настоящего Р1С-
микроконтроллера.
Для подключения эмулятора к компьютеру обыч1ю используется
последовательны!"! !1нтерфейс RS232. Через !!его в эмулятор загружается
программа микроконтроллера !i осуществляется уттравление ее выполнением
с помощью специальной компьютерной программы. Так как эмулятор - это
«разрозненная» верс!1Я Р1С-М!1кроко11трОлле-ра, вы !1мсетс доступ к его
различ!1Ь1.м внутренним узлам !i шинам, в частности, .можете узнать, по
камлм адресам «проходит» программа, как!1е коды зан!1Са!1Ы в
управляюи1!1е рег!1стры !т т.н. В случае


РАЗРАБОТКА ПРОГРАММНОГО ОБЕСПЕЧЕНИЯ


Рис. 2.1
Общий вид эмуляторе!
необходимости можно остановить иcпoлняe^ry'ю программ); чтобы считать
состояние памяти или некоторых регистров.
Эм)лятор обеспечивает работу приложения в реальном времени,
поскольку' способен функционировать на частоте микроконтроллера.
Эмулятор - дорогостоящее промышленное средство, поэтому вряд ли имеет
смысл покупать его для создания мелкосерийных или единичных
приложений.
второе возможное решение - использовать симулятор, но он не позволяет
провести все необходимые тесты. Симулятор - это программа, написанная
специально для микроконтроллера, работу которого она будет имитировать.
Симу-лятор обычно функционирует на той же машине, где писалась
п])ограмма приложения. На ее вход Подается объектный (или иснсиншемый)
код, который пеобходидмо протестировать, и программа ведет себя так, как
вел бы себя имитируемый микроконтроллер.
Симулятор значительно дешевле, чем эмулятор, ведь это только
программа, сложность которой пропорциональна сложное ги MI 1кро-
ко1ггроллера. Стоит он в дсся гки раз меньше, чем эмулятор.
Регистры и порты ввода/вывода микроконтро;шсра представляются
переменными, хранящимися в памяти компьютера. 'Гак,


8-разряднын наршхлельный порг нредсгаилсн байтом данных. Достаточно
считать эти данные, чтобы в любой момент знать о ходе выполне1Н1я
программы и состоянии выходов. Ввод данных через порт МОЖНО
имитировать записью соответствующих данных в память. Процедура
моделирования операций обмена через порты ввода/вывода «растя1'ивастся»
во времени, но если она хорошо проведена. То позволяет проверить 80%
функЦ1н*1 программы микроконтроллера.
Однако положе1И1е усложняется, когда необходимо учитывать
временные характеристики сигналов, передаваемых через порты
ввода/вывода, Симулятор - это программа, воспроизводящгш лишь алгоритм
работы микроконтроллера. Даже если использован высо-
конроизводительньн! компьютер, симулятор работает в десятки, а иногда и в
сотни раз медленнее, чем та же программа, непосредственно выполняемая
микроконтроллером.
Некоторые функции, связанные со временем, нельзя полностью
смоделировать на симуляторе. Тем не менее, хорошее владение си-
м>'ЛЯТоро.м позволяет достаточно быстро и с минимальными капита-
ловложениями тестировать приложения.
РАЗРАБОТКА ПРОГРАММНОГО ОБЕСПЕЧЕНИЯ
ДЛЯ ПРОМЫШЛЕННОГО ПРИМЕНЕНИЯ
1'азработку микроконтроллерных приложений д;ш промышлехпюго
использования (о приложениях ограниченного применения будет рассказано
чуть ниже), целесообразно проводить следующим образом.
Сначала необходимо выбрать элементную базу разрабатываемого
ycTpoiicTBa, поскольку от этого зависит и качество аппаратуры (надежность,
стабильность, быстродействие), и об-ьем разрабатываемого программного
обеспечения. Выбор элементной базы должен быть тщательно продуман 11
обоснован до начала разработки программного обеспечения, так как в
некоторых случаях дальнейшие замены компонентов могут привести к
полной переделке программы.
Как только выбор сделан, 1гужно определить структуру программного
обеспечения. В результате этой работы может оказат1ровые данные могут быть выражены во всех класс11-
ческихнредсгавлеииях; бинарном, десятичном, восьмеричном, ше-
стнадиатеричном и символьном (ASCII).
Ои разрешает запись арифметических и логических выражений
надданными и адресами, а также позволяет записывать операции отношения,
сдвига вправо и влево.
Файлы с программами могут быть ианисаны в любом текстовом редакторе,
едиисгвенное требование - они должны быть представлены в текстовом
формате ASCII.
Используемый в MPALC синтаксис - классический для ассемблера, и даже
менее консервативный, чем у аналогов. Допускается форматировать
исходный текст с помощью табуляции. Идентификаторы способны включать
до 32 знаков, причем различаются прописные и строчные буквы, но по
желанию Э1у опцию можно отключить.
11а выходе ассемблер создаст различные файлы: файл д.'ш про-
граммирования микроконтроллера, файл листинга, файл сообщений об
ошибках и предупреждений и, наконец, файл для сим)'лятора.
Различные форматы фа1'1лов для программирования микроконтроллеров
позволяют использовать различные программаторы, что соответствует
требованиям рынка.
Возможности ассемблера расширяет поддержка макрокоманд. Что такое
макрокоманда? Это выбранная вами часть программы, которая выполняет
обычно одну часто используемую и хорошо отлаженную функцию,
опре;1елениая как макрокоманда, названная оригинальным именем и
включающая переменные величины. Однажды определенная, эта
макрокоманда может быть noMciqeiia в любое место программы и
интерпретирована ассемблером.
11аконец, условное ассемблирование позволяет, в зависимости от
значения некоторых определенных вами параметров, откомпилировать ту или
иную часть программы. Это очень интересная функция, хотя и недооцененная
многими программистами. Благодаря


РАЗРАБОТКА ПРИЛОЖЕНИЙ
ей можно написать програмл1у, обн1\'ю для нескольких приложений,
отличающихся только дс галями, например для таймера с жидкокр! ic-
таллической индикацией и Tdi'iMcpa на светодиодах. В ходе компиляции
параметры, опре;1еляющие условия ассемблирования, показываются в начале
листинга, чтобы было ясно, для какого приложения предназначена
программа.
Листинги некоторых про^эамм, которые вы иа11дсте в гчавах 3 и 4, был11
наш 1саны HMCI ПЮ для компоповки с помощью ассемблера MPAI .С.
Симулятор MPSIM
Симулятор по.могает проверить на ПШ совместимом ПК «поведс-iHie»
вашей программы. Он имитирует работу выбранного микроконтроллера
подсемейства FIC 16СХХ и позволяет моделировать cocroHinie его памяти,
управляющих регистров и портов ввода/вывода в процессе выполнения
микропрограммы.
11есмотря на то, что MPSIM работает в среде DOS и информация, которую
он представляет разработчику в текстовой форме (рис. 2.3), выглядит
малопривлекательно по сравнению с документами Windows, эффективность
симулятора COMHCHIH"I не вызывает. В верхней часги окна выводится
тек^тцее содержимое регистровой памяти микроконтроллера, в том числе
)Т1равляющ1 ix регистров. Эти данные можно редактировать.
Идентификация регистров осуществляется либо но их адресам, либо но
именам, которые задаются в тексте программы. Последнее значительно
упрощает отладку программы, поскольку определить назначение регистра
проще но его имени, чем но обезличенному адресу. Можно отображать не
только состояние регистров, но и отдельных битов. В рассматриваемом
примере это показано для порта В, представленного бит за битом с RB7 ио
RBO. Более того, отдельные биты регастров могут идентифицироваться по
именам.
Содержимое регистров будет меняться по мере трассировки имитируемой
программы.
Нижняя часть экрана - это рабочее окно, где отображается листинг
трассируемой (то есть выполняемой в пошаговом режиме) программы. Здесь
же поль.эователь может набирать команды, необходимые для унравлсния
процессом отладки, и наблюдать их вы-полпе1ше. Пример работы в режиме
трассировки представлен на рис. 2.4. В правом верхнем углу экрана
показывается теоретическое время вьнюлиения программы и помер игага.


РАЗРАБОТКА ПРИЛОЖЕНИЙ


СИНТАКСИС АССЕМБЛЕРА
MPALC





Сим\'лятор Ml'SIM включает все функции, обычные для таких устройств:
запуск сим)'лнруемой программы, трассировку программы с заданным шагом,
установку точек прерывания, выполнение программ в режиме трассировки с
прерываниями по условию, отображение содержимого хымяти и
управляющих регистров и т.д.
Он обеспечивает возможность редактирования отлаживаемой программы,
оперативного изменения содержимого памяти, располагает функцией.
Позволяющей запоминать только что сделанные изменения таким образом,
'ггобы их можно было легко переносить потом в исходную программу.
Сим)'лятор имитирует внешние сигналы, подаваемые на входы
микроконтроллера. Осуществляется .это с помощью специального фа1"1ла,
где хранится информация о том, какие ситалы должны подаваться на
ра.зличиые входы и в какие моменты времени. Данный файл можно
сформировать во время работы сил1улятора. MPSIM иоддер-Ж11вае г
командный файл, в кото|эом содержатся разл! 1чные функц! и i (команды)
управления процессом симулирования, начальные условия, адреса точек
прсрывани!! и т.н. Наличие командного файла из-бааляет пользователя от
необходи.\юсти при каждом новом цикле отладки ирогра.ммы повторно
набирать все команды и условия. Вместо этого достаточно просто обратиться
к командно.М)' файлу, и все загрузится автоматически. Напо-мннм, что все
файлы, с которыми работает снмулятор, - стандартные текстовые файлы
формата ASCII, и они могут быть прочитаны и отредактированы с помощью
команд DOS ИЛ11 любого текс гового редактора.
В заключе1Н1е добавим, что результаты моделироватшя можно выводить
в файл или на печать, можно вести журнал сим)'лирования,
дезассемблировать код, вести поиск данных в памяти и т.д.
Надеемся, что несмотря на краткость обзора возможностей ci 1му-лятора
MPSIM, вы убедились в его эффективности и целесообразности
использования при отладке программного обеспечения.
Программатор
Программатор- это последний элемент набора разработки программного
обеспечения для микроконтроллеров, наиболее простой из трех
представленных. Поддержка его работы осуществляется специальной
программой, обеспечивающей развитый диалог в псевдографическом режиме,
с paзвepтывaющи.vнlcя меню и диалоговыми окнами (рис. 2.5).


Он обладает набором типичных для всех микрокон гроллсрных про-
грамматоров функций: выбор типа программируемой микросхемы, тест
микросхемы «па чистоту», программирование, считывание и некоторые
другие менее важные функции.
Аппаратурну'Ю часть программатора образует плата, иодюночае-мая к
одному из четырех последовательных портов IBM, совместимого ПК. Связ1>
с коМ1н.ютером через порт тестируется до на»гала нрограммирования.
Работа данного программатора не требуе г Особых ком.ментариев.
Отметим лишь, что он не нредназпачен д.'ш массового тиражирования
микроконтроллеров.
СИНТАКСИС АССЕМБЛЕРА MPALC
Синтаксис, используемый ассемблером MP-\LC, достаточнотрадици-01Н1ЫЙ
и не должен вызывать трудностей у пользователей, уже работавших с
машинным языком. Но, чтобы вы могли легко читать листинги, ириведеиные
в следующих главах, ниже даются основные сведения об этом act емблере.
Детальное описание языка вы найдете в учебнике но MPALC.
Как и большинство ассемблеров, MPALC нечувствителен к управля-
ющему символу «табуляция», и поугому листинги можно табулировать как
вам нравится. Ассемблер не ра;»личает прописные и строчные


в каталоге фирмы Parallax прелставлсп очень иптереспый сищ'ля-тор
Reflection-Sx для микроконтроллеров семейства PIC 16СХХ, который
способен имитировать работу портов ввода/вывода.
Это устройство, как показано на рис. 2.6, подсоечиняется к отлаживаемой
схеме как эмулятор, то есть заменяет микроконтроллер в вашем приложении.
Псевдоэ.мулятор управляется через последовательный порт IBM
совместимого ПК (СОМ1 или С()М2) и поддерживается специальным
программным обеспечением.
Необходи.мо помнить, что Reflection-ax все же симулятор и пе может
работать в реальном времени. Te.vi не менее он позволяет успешно проводить
тестирование аппарату ры приложения.
Симулятор КеПес11оп-5х питается от сетевого адаптера, дающего
постоянное стабилизированное напряжение от 9 до 12 В при токе в 250 мА.
Дш1 плоских кабеля, с 18- и 28-ко11тактыыми разъемами, позволяют
подключать его вместо Р1С-.микроконтроллера. Благодаря DIP-
переключателю устро1ктва можно подключить выводы MCLR и RTCC либо к
положитслы1ом)'полюсу питания вашего пршюжения, либо к а11ало1Т1чной
цепи симулятора Re(lection-5x. Свиязь с ПК осуществляется через
выбпрае.мып вами последовательный порт с помощью входящего в комплект
устройства кабеля. При этом программное обеспечение Rcfleclion-ox
автоматически обнаруживает


и настраивает порт. Обмен осуществляется па максимальной скорости
передачи порта.
Программное обеспечение симулятора использует для диалога
трехоконную конфигурацию экрана. Верхнюю правуто часть занима-
егфрейм, где показано содержимое оперативной памяти MHKJ)OKOHT-
роллера; в цен гре и справа отображается содержимое упраи;шющих
penicTjDoB; в нижней части окна вы можете кон гролировать ход мо-
делирования по исходном)'листингу.
Симулятор позволяет вводить неограничепиое число точек прерывания,
допускает пошаговое выполнение npoqjaMMbi, прогон от одного прерывания
до следующего. Он разрешает оперативно изменять содержимое любого
ут1равляю1цего регистра или ячейки памяти для того, чтобы наблюдать
влияние этого на ход п|Х)граммы. Особо стоит рассказать о двух опциях.
Одна Из них - выполнение программы до след>тощей CTJDOKH программы.
Она позволяет при работе в пошаговом режиме, например, за один niar
выполнять всю подпро^:)амму.
И любой момергг можно увидеть точное реальное время выполнения всей
программы или любой ее части.
Вы можете задать частоту тактового генератора вашего приложения. Это,
конечно, пе оказывает никакого влияния па скорость


РАЗРАБОТКА ПРИЛОЖЕНИЙ


моделирования, но учитывается программным обеспечением. Необходимо
отмстить гибкость установки точек прерываний и модификации регистров.
Достаточно навести курсор па строку, которую вы хотите определить как
точку прерывания, или па регистр, который собираетесь изменить, и
впечатать новое значение. Не требуется запоминать адрес прерывания, все
видно на экране.
Наконец, довольно редкая, но очень полезная опция: сим^'лятор може г
переходить назад на величину от одного до ста шагов. Это позволяет,
например, увидеть, каким было cocTOHinie приложения до остановки
программы!
Эмуляторы ClearView 5Х и ClearView XX
Э.мулятор ClearView 5Х предназначен для группы микроконтроллеров PIC
16С5Х, в то время как ClearView XX-для осгальпой части подсемейства PIC
16СХХ. Такое деление неудобно, так как вынуждает приобретать два
отдельных ycTpoiicTBa, чтобы обеспечить работу со всеми
микроконтроллерами подсемейства PIC 16СХХ.
В том, что касается аппаратуры, данные .эмуляторы сходны с симу-
лятором Reflect ion-5x. Отличие в том, что у эмуляторов (]learVie\v 5Х и XX
имеется тактовый генератор, способный заменить, в случае необходимости,
тактовый генератор приложения. Включается он двумя В1Р-
пере1слючателями. Сетевой адаптер обоих устройств имеет небольшие
размеры и обеспечивае г напряжение питания от 7 до 9 В при токе до 1 А.
Подключение к приложению осуп(ествляется в соответствии с рис. 2.6,
поскольку это настоящие эмуляторы.
Что касается их программного обеспечения, то все сказа1П1ое по поводу
Reflection-5x действительно и для inix. Но поскольку ClearView 5Х и XX
являются эмуляторами, они работают в реальном времени. Поэтому, если вы,
например, тестируете свою программу и в ходе теста осуществляете прогон
программы от одного прерывания до другого, он будет происходить г той же
скоростью, как если бы на вашем приложении стоял микроконтроллер.
Это остается действительным до частоты тактового генератора 20 МГц для
ClearView 5Х и до 10 МГц - для ClearView XX.
Естественно, в реальном времени можно имитировать и функци-
онирование портов ввода/вывода, что свойственно только настоящему
э.мулятору.


СХЕМНЫЕ РЕ ЕНИЯ
ИНТЕРФЕЙСОВ МИКРОКОН
• ЛЛЕРОВ
в этой главе:
Параллельные выходы
Параллельные входы
Комбинированное использование портов
Внешняя периферия
Энергонезависимая память с последовательным интерфейсом
Управление аналого-1Дифровым преобразователем


СХЕМНЫЕ РЕШЕНИЯ ИНТЕРФЕЙСОВ


ПАРАЛЛЕЛЬНЫЕ ВЫХОДЫ





Большинство устройств па основе микроконтроллеров соединяется с
вненшими ус гройствамн при помощи портов ввода/вывода. Их назначение
может быть различным и определяется конкретным нрименснисм
микроконт|)оллера. Так, если ваш микроконтроллер -автомат,
ут1равляющи1'1 посудомоечной машиной, на его входы б)71)Т Подаваться
сигналы г различных датчиков, а его выходы -управлять двигателями и
элекгромагнитныУ1и клапанами. Если же речь идет о программируемом
термос гате, то порты ввода/вывода микросхемы будут взаимоденствовать с
клавиатурой, цифровым индикатором, температурным зондом н системой
управления нагревательного устройства.
Разнообразие применений портов ввода/вывода не должно вас путать,
поскольку в больипшстве случаев в их основе лежит несколько базовых схем,
которые и onucaiHj в этой главе.
Ни одно из прелставле1П1Ых здесь решений не претендует на зва-iHie
единственно возможного или самого лучшего. Преимущество
микроконтроллеров именно в том и проявляется, что они по.зволя-ют
получить один и тот же результат разными способами. Отталкиваясь от
представленных здесь примеров, вы должны сами определить, какой вариант
лучше всего подходит для того или иного приложения.
ПАРАЛЛЕЛЬНЫЕ ВЫХОДЫ
Речь идето наиболее простом способе использования портов ввоча/ вывода,
как но числу необходимых ко.мнонентов, так и по сложности
соответствующего программного обеспечения. И именно в уст{ЭОЙ-ствах с
микроконтроллерами TaKoi'i вид взаимодействия аппаратурных узлов
применяют чаще всего. Поэтому мы с него и начне.м.
В качестве выходов параллельные порты могут применят1>гя для
управления реле, симисторами, светодиодными или иными цифровыми
индикаторами.
Управление светодиодами и оптронами
Управление светодиодами - самое простое, что может встретиться на
практике. Схемно оно может немного изменяться в зависимости от
используемого микроконтроллера. У некоторых микроконтроллеров выходы
рассчитаны на ток большой силы, а поэтому светодиод может быть
подюхючен к ним непосречстпенно через ограничиваю-1ЦИЙ ток резистор. В
качестве примера приведем схему управления четырьмя светодиодами через
порт APIC-микроконтроллера 16С5Х


(рис. 3.1). Напомним, что допустимая сила тока каж.чого выхода па-
раллельного порта указанных микросхем составляет 20 NL\, что вполне
достаточно для зажигания одного светодиода. 11о суммарный ток порта не
должен i хревышать 50 мА. В рассма^эиваемом случае воа юль-зуемся
светодиодом на 10 .VL\, чтобы не превышать этого мшссимума.
Если требуется, чтобы индикация была хорошо видна, сле,туст ис-
пользовать светодиоды высокой яркости или применить схему, показанную
на рис. 3.2, в которой к выход)' микроконтроллера подключен примитивньп"!
усилитель на транзисторе.
Ограничительный резистор Rn,,, выбирается в зависимости от требуемой
силы тока. Учитывая значение сопротивления в цепи базы транзистора и его
коэффициент усиления, через светодиод Можно получать ток в 100 м.\ и
более, чего вполне достаточно.
Ехли один микроконтроллер должен рфавлять больше чем четырьмя
светодиодами, целесообразнее выбрать интсгргихьн) ю микросхе-щ с
несколькими усилителями тока. Широко применяются микросхемы ULN2003
и ULN2803 (рис. 3.3), содержащие семь и восемь таких усилителей
соответственно. Эти микросхемы изначально выпускались фирмой Sprague,
теперь же они предлагаются многими производителями.
Усиление тока в них осуществляют схемы на составных т{эанзис-торах
(схема Дарлингтона), вк^ночающие защитньн! диод, не ис-поль.зуемый в
случае, показанном на рис. 3.3, но необходимый при управлении реле, о чем
будет рассказано ниже. Каждая схема обес-иечиваеттоки до 500 мА. В цепи
базы входного транзистора установлен резистор, ограничивающи!! входной
ток и позволяющ!»! напрямую нод1слючаться к портам микроконтроллера.
+5V


ГОТОВЫЕ РЕШЕНИЯ
В предыдущих главах уже рассматривалось немало примеров использования
Р1С-микроконтроллеров подсемейства 16СХХ и соответствующее
программное обеспечение. Теперь вам предлагается несколько конкретных
ycTpoi'icTB.
Эти устройства были выбраны по двум причинам. Во-первых, они
представляют Н[)а«сгический интерес и, во-вторых, нсполкзуют один или
несколько методов, не описанных в предыдущих главах.
ЧАСЫ С БУДИЛЬНИКОМ
11иже приведен полный исходный текст соответствующей программы,
поскольку без этого наш рассказ потерял бы часть своего смысла.
Программное обеспечение для часов с будильником включает в себя
несколько очень часто утютрсбляемых подпрограмм:
? подпрограмму управления матричной клавиа1урой, работающую
совместно с 4-разрядным цифровым индикатором от одних линий
микроконтроллера;
? подпрограмму динамической индикации;
? подпрограмму отсчета времени, иснользующ)то TaiiMep реального
времени (RTCC) и кварцевьи! синхро генератор микрокон троллера.
Схема устройства преде гавлена на рис. 5.1. Что касается клавиатуры и
индикатора, то их схема практически идентична той, что приведена в главе 3.
Если вы посчи гаете, что несмотря па относительно высокое значение
сопротивления резисторов RI2 - R15 су1цествует слишком сильное влияние
юшвиатуры на индикатор, вы можете использовать схему, нредставленную на
рис. 5.2, которая благодаря диодам устраняет эту связь.
Частота тактового генератора микроконтроллера равна 4,096 МГц. Она
стабилизируется кварцевым резонатором и позволяет для часов получить
частоту, период которой является кратной частью секунды. Частота
командных циклов микроконтроллера с данным генератором составляет 1,024
МГц. Задав коэффициент деления предварительного делителя RTCC равны.м
32, получаем частоту 32 КГц, которая, если установи гь модуль счета RTCC
равным 96, позволяет пол}'чить период в 5 мс. Эти сигналы будут
использованы для отсчета секунд и далее - минут и часов, а также для
управления индикацией иклавиатурой, как видно из временной диаграммы,
приведенной на риг. 5.3.


Каждый разряд индикатора отображается в течение 5 мс с перио-
дом 20 мс. Сканирование клавиатуры осуществляется импульсами
длительностью 3 мкс (по стголбцам), с паузами в 40 мкс.
Алгоритм программы представлен на рис. 5.4 и не требует особых
комментариев; отметим только, что данное устройство достаточно
эффективно использует возможности Р1С-микроконтроллера I6CXX.
Действительно, большинство функциональных циклов выполняются
менее чем за 5 мс, что согласуется с циклом работы таймера RTCC.
Внешний вид клавиатуры устройства представлен на рис. 5.5.
С помощью функциональных клавиш устанавливаются различные
режимы работы устройства.


ГОТОВЫЕ РЕШЕНИЯ


РЕАЛИЗАЦИЯ
ШИНЫ 1'С





Шнна 1-'С использует только две сигнальные линии и обеспечивает обмен
данными в последовательной форме со скорое гыо 100 Кбит/с (или 400
Кбит/с для самих последних версий). Это значение, конечно, далеко от
скоростей передачи локальных информационных сетей, в которых скорость
доходит до 10 Мбит/с и более.
Первоначально uiinia Г-'С применялась для звуковых или телевиде-
оприложепий, для которых простота реализации была важнее, че.м высокая
пропускная снособность.
Общие положения
Шина [??'С имеет след)'ющие основныехарак гсристики:
? это последовательная двухпроводная типа с л(И1ие1Ч передачи данных
SDA (Serial Data) и линией передачи тактовых синхроимпульсов SCL
(Serial (Лоск);
? данные могут передаваться в обоих направлениях между любы-.ми
двумя абонентами;
? предусмотрено мультиунравление передачей данных, то есгь
инициировать обмен и управлять им может любое подключенное
устройство;
? каждый абонент luiHibi и.мест свой персональный селнтразряд-нып
служебный адрес. Таким образом, к шине может быть подключено до
128 абонентов;
Ф пересылка каждого 6ai"iTa данных завершается сигналом под-
тверждения приема;
Ф шина может работать с максимально!"! скоростью 100 Кбит/с, причем
ее можно авто.матически за.медлять, чтобы приспосабливаться к
скорости более медленных устройств-абонентов;
Ф максимальное число абонентов шины ограпичснодогп'стимой
емкостной нагрузкой хшшы, которая не долж!la превышать 400 пф.
Реалыюе число зависит от характеристик микросхем, нспользу-смыхдля
подключения к шине, и дискретных полупроводниковых компонентов;
Ф электрические уровни !иины дохгуткают использование микросхем,
изготовленных по технологиям КМОИ, NMOH или ТТЛ.
Рассмотрим принципы функционирования ШИ1!Ы.
Принцип обмена данными
Принцип работы входных и выходных каскадов устройств, подключаемых к
шине Г'С, иллюстрируется рис. 5.6. Подключение к шине


и принципы работы приемных ycTpoiicTB комментариев не требу-KJT. Что
касается передатчиков, TI> для тк обязател!.на конфигурация с открытым
коллектором или с открытым стоком. Сосдипепие передатчиков через шину
эквивалентно их проводному И.
Рис. 5.6
Принципы подключения к шине 1'С
Нагрузочные резисторы передатчиков линий SDA и SCL долж-Н1Л быть
нодсоедштены к положительному напряжению. От этого напряжения зависят
логические уровни сигналов шины. M!.i будем говорить о положительно!"!
логике, при которой высокому уровню напряжения соответствует логическая
единица, а низкому - логический ноль.
Если ни один из абонентов ничего не передает на шину, сиг1!алы линий
SD,'\ и SCL имеют высокие уровни.
Данные, передаваемые по шине, считаются достоверными, когда c^!гнaл
на линии SCL имеет высокий урове!1ь (рпс. 5.7). Передатчик должен
устанавливать данные па л!Н1ию SD.'\ при низком уровне ли-1!!111 SCL и
1!одцерживать их в течение всего BpeNienii, когда уровень
ЛИ1!11И SCL ВЫСОКИ!"!.
Так как передача осуществляется в последовательно11 форме, в посылках
должна содержаться информация о ее начале и конце.


ГОТОВЫЕ РЕШЕНИЯ


операцию, которую собирается осуществить master- считыиание или запись.
Если этот бит равен пл'лю, master собирается записать данные в slave-
ycTpoiicruo, т.е. посылает ему данные. Если бит равен единице - master
собирается считать данные из slave-устройства, то есть собирается поЛ)^1Ить
данные от подчиненного.
Когда master желает осуществлять несколько обменов с подчиненными
устройствами, имеющими различные сл)'жебиые адреса, ему не обязательно
заканчивать первый обмен посьткой стон-условия. Можно сразу начать
HOBbiii обмен посылкой старт-условия, первое поччинениое устройство при
этом автоматически отключится.
11аконец, существует процедура, называемая общим обращением, при
которой сл\'жебный адрес, посланный абонентом master, равен нулю. Все
микросхемы, подсосдннснные к шине н способные ответить на такое общее
обращение, должны это сделать, принимая данные, которые проходят в
текущий момент по шине. Их действия зависят от бита команды
(считыва1Н1я/заниси) первого байта. Действительно, если этот бит равен
н)'лю, второй байт играет особую роль, KOTop\TO мы не будем сейчас
детально рассматривать. Скажем только, что благодаря этому любой из
подчиненных абонентов получает возможность запрограммировать свой
адрес с помощью программного обеспечения или аппаратных средств.
Когда этот бит равен единице, имеет место общее обращение, переданное
абонентом master (например, контроллером клавиат)'-ры). Такая микросхема
неспособна генерировать адрес получателя информации, KOTopoNf)' она
должна се посылать. В этих условиях следующий байт содержит адрес
абонента master, чтобы интаигектуаль-ногподч1Н1еннос устройство,
например микроконтроллер, его признал и принял переданную им
информацию.
Схема реализации интерфейса 1^С
В этом примере РЮмикроконтроллср 16С54 используется как абонент шины
Г'С. Предлагаемая базовая схема может применягься в любом устройстве,
работающем с интерфейсом FC в режиме под-чинсЕнюго устройства (slave).
Схема устройства представлена на рис. 5.10. Две Л1Н1ИИ порта А ис-
пользованы в качестве лИ1Н1Й SDA и SCL. Резистор R2 необязателен и
должен быть установлен, только сечи его нет в master-устройстве шины.


Рис. 5.10
Схема использования PIC16С54 для реализоции интерфейса PC
Микросхема опознает служебный адрес, опеределяемый величиной
DEVICE_ADDRESS (см. листинг 5.2), которая выбрана по умолчанию равной
D6 (и D7 для считывания). Этозначение предусмотрено фирмой Philips для
ИС типа PCF8573 (часы реального времени - календарь).
Используемый Р1С-мнкропроцессор 16С54 ведет себя как периферийное
устройство шины PC, содержащее восемь дост\11ных через субадреса
внутренних регистров. Он реализует также так называемый канал данных с
нулевым субадресом, через который могут счи-тываться последовательности
символов.
Дост)Т111ые через шину регисгры в программе идентифицируются как
I2CR0 - I2CR7, при этом I2CR0 соответствует субадресу 8.11ри обращении по
нулевому субадрссу микросхема выдает Последовательность идентификации.
у\лгоритм, представленный на рис. 5.11, иллюстрирует^нрннцип работы
этой программы, а ее текст приведен в листинге 5.2. Она может быть легко
адаптирована к вашим приложениям с помощью соответств)1оЩ11х
макрокоманд:


МИКРОКОНТРОЛЛЕР STAMP


ОБЩИЕ ПОЛОЖЕНИЯ





Stamp - это PIC-микроконтроллср 16C56, u программном обеспечении
которого имеется интерпретатор языка Basic. Да1П1Ы1"1 микроконтроллер
ностав;шется в виде отдельных микросхем или в составе платы, являющейся
по сути средством разработки и отладки приложе1Нгй. В любом случае это
решение представляет интерес для тех, кто хотел бы создавать собственные
приложения с Р1С>микро-контроллерами.
Хотя Stamp не обеспечивает столь высокой скорости выполнения
программ, как обычные Р1С-микроконтроллеры, программ!.! которых
ниш}тся на ассембле11е, но во многих устройствах, где быстродействие не
является нсрвостепе1Н!Ым критерием, он отлич1Ю себя зарекоме1!довал.
Низкая стоимость Stamp и средств его разработки, а также крайняя
простота применения - вот вполне достаточные ар!умснты в пользу
основательного знакомства с ним.
ОБЩИЕ ПОЛОЖЕНИЯ
Микроконтроллер Stamp !!редложе11 америка!1Ской ком!1а!1ией Parallax.
Он выпускается в двух вариантах: микросхема, на основе которой можно
создавать различные устройства, или маленькая нс-чатиая !!лата с
соответствующим программным обеспечением для связи с IBM совмсс
гимым ПК.
Опыт !!одсказь!вает, что Л)'чше приобретать второй (пол!1Ь!Й) ва-риа!1т
Stamp, чтобы использовать его в качестве устройства для разработки и
тестирова!1ия, а затем уже покупать единичные микросхемы для
ко!1крет!1Ь!х приложений.
Мини-система разработки содержит след^'ющие элементы:
? собственно плат}' Stamp с Р1С-микроконтроллером 16С56 и ми-
ни.малыюй периферие!"!, необходимой для ф)'НК!;ионирования вашего
устройства и поддержки интерфейса с IBM совместимым ПК;
? кабель под!слюче1Н1я Stamp к параллельном)- порт)'ПК;
? дискет)' с программным обеспечением, содержащ)то специальный
редактор и программу для связи со Stamp;
? учебник на французском языке и 01!иса!!ие 1!ескольких !!римс-ров на
ан1лийском языке.
Источник питания в комплект не входит, поскольку для этой цели годится
обычная батарейка на 9 В. Если вы планируете интенсив»ю


использовать St amp, то лучше нодюночнть сетевой адаптер, обсснс-
чивающнй 9 В при токе в несколько десятков мА.
Микроко!! гроллер 1GC56 PBasic - это не что пное, клк PIC 16С56 XT,
поставляемый с запрограммированным интерпретатором PBasic. Он
полностью соответствует микроконтроллеру, установленному на плате
Stamp, что обеспечивает ус1!еш!!ос фу1!кцио!1ирование разработанных
вамиустро1"1ств с I6C.56 PBasic, отлаживаемых посредством платы Stamp.
СИаЕМА РАЗРАБОТКИ
Плата Stamp может быть использована вами либо для отладки прило-же!1ий
на ба.эе микроконтроллера ШС56 PBasic, либо для не!1ос}х;д-ствснной
реализации на ее базе необходимых приложений, тем более что ra6a|jHTbi
платы невелики и она может быть легко адаптирована для в!.!полнення
различ1!Ь!х функций.
Схема платы Stamp
Схема плат!.1 Stamp край!1е проста (рис. 6.1). По.мимо PIC 1СС5С она
содержит минимум компонентов, которые потребуются для любого
разрабатываемого вами устройства. Такти|>ова11ие работы мнкро-
ко!!Т1)оллера осу!!1ествляется от встрое!!!1ого тактового !-е!1ератора с
кварцевь!м резонатором.
В схеме Stamp не предусмотрено никакого снсциалыюго устрой-с гва,
которое обеспечило бь! вь!ключе!!ие устройства в случае неожиданного
понижения напряжения питания. Вывод MCLR просто соединен с
положительным вьтводом питания через резистор. В результате, если плата
Stamp будет вЬ!11ка, особешю вначале, но с
помощью учебника вы быстро его приобретете. Редактор позволяет
сохранять программы на диске и загружать их для использования или
отладки.
Программу можно использовать практически с любым ПК. Необходимо
только, чтобы он имел ОЗУ не менее 128 Кб, флонпи-диско-вод и
параллельны!! аорт. Что касается монитора, чо cynep-V'GA не требуется, так
как реда1стор работает исключительно в текстовом режиме.
ЯЗЫК ПРОГРАММИРОВАНИЯ PBASIC
Для программирования функций микроконтроллера Stamp используется язык
PBasic. Подробную информацию о структуре н возможностях этого языка вы
найдете в инструкцин по его применению, здесь же описаны только наиболее
часто используемые операторы и их особенности. Хотя npoipaviMa
рассматриваемого интерпретатора языка Basic за1Н1маст не более одного
килобайта двенадцатираз-рядных слов памяти, он обладае гдостаточно
широкими во.зможнос-тями.
Во-первых, KOHCTairrbi могут бы гь выражены в десятичном, шест-
надцатеричпом, двоичном и ASCJII кодах. Используемый синтаксис похож
па синтаксис ассемблера.
Во-вторых, PBasic поддерживает символические имена (идентификаторы)
как для адресов, так и для данных. Таким образом, допускается вместо
невыразительного GOTO 100 -записать, например, GOTO Ci rcle.
Эта возможность, позволяющая со.здавать вполне читаемые программы,
особенно необходима потому, что PBasic не использует нумерацию строк.


Комментарии могут быть включены в программус обычным REM;
несколько инструкций допускается записывать на одной линии, разделяя
двоеточием (:).
Арифметические и логические операции представлены в этом я.зыке
достаточно полно (табл. 6.1). Но все же есть область, в которой возможности
PBasic ограничены. Микроконтроллер Stamp поддерживает только целую
арифметику, что вполне логично, если вспомнить, сколько строк программы
требуется для обработки чисел с плавающей запятой (см. листин1'и в главе
4).
В PBasic предусмотрено несколько предопределенных имен, например,
таких как PinX, с помощью которого указываются линии X какого-нибудь
порта, и Ро rtX - для ука,зания порта X. PBa.sic поддерживает также имя DirX
для определения назначения линий портов. Все это позволяет значительно
сократить программу.


МИКРОКОНТРОЛЛЕР STAMP
Некоторые из нрииеденных операторов являются стандартными
операторами языка Basic:
? IF-THEN-условный оператор;
? GOTO - безусловный переход;
? GOSUB - обращение к иоднро1рамме (и одну программу можно по-
мещать до шестнадцати таких обращений);
? RETURN -возврат из подпрограммы;
? FOR-NEXT - оператор цикла (вариант с назначаемым шагом STEP
также поддерживается);
? LET - факультативная инструкция, так как можно записать LET А=
2или А = 2;
? RANDOM - генератор псевдослучайных чисел (шестнадцатираз-
рядных).
Все это стандартные операторы языка Basic и потому не требуют
комментариев. В дополнение к ним имеется ряд специфичных,
предназначенных специально для работы с микрокоитроллерами.
Операторы управления портами ввода/вывода
К 3Toii группе специальных операторов относятся:
? OUTPUT - определяет выходной порт;
? IN PUT - определяет вход! юй i юрт;
? LOW - устанавливает на выходе низкий уровень;
? HIGH -устанавливает иа выходе высокий уровень;
? TOGGLE - изменяет состоя1П1е выхода (с высокого на низкий или с
низкого на высокий);
? PULSOUT - генерирует импульс с программируемой длительностью
(импульс может иметь обе полярное ги);
? PULSIN - измеряет длительность и.мнульса, поступившего па вход;
? REVERSE - изменяет назначение вывода (выход оказывается входом и
наоборот);
? BUTTON - очень мощная команда, обеспечивает считывание клавиши,
подключенной к ВХОД)' (устраняя при этом влияние «дребезга контак
гов»), автоматическое повторение операции, если клавиша
удерживается нажатой, и переход к онределеппо.му адресу, когда
состояние клавиши устойчивое.


ЯЗЫК ПРОГРАММИРОВАНИЯ PBASIC
Операторы для управления последовательным
вводом/выводом
Вторая гр)'ппа включает всего два оператора:
? SERIN - позволяет принимать последовательные данные через порт.
Допускается получение данных со скоростями 300, 600, 1200 и 2400 бод
в формате классической асинхрохпюй поашдо-ватсльиостп;
? SEROUT - последовательный выво-; данных (аналогичен SERIN, но
используется для передачи).
Управление аналоговыми величинами
Для управления аналоговыми величинами предназначены следующие
операторы:
? PWM - позволяет генерировать модулируемые по ширине им-п\'льсы,
ВТОМ числе посредством подключения внешней RC-це-ночки
генерировать напряжение пе(х;ме1П1ой величины на заданном выходе;
? РОТ - считывает значение iiepCMeinioro резистора или прибора с
изменяемым сопротииленисм (фоторезистора, терморезистора и т.п.) в
пределах между 5 и 50 кОм. 1'азличныо параметры по-зволяютонредсля
гь пределы и масштабные коэффициенты для этой команды;
? SOUND - генерирует па выбранном выходе звуковые сшчхалы,
программируемые по частоте и длительности.
Прочие операторы
Помимо вышепе1х:численных в языке PBasic есть и друтие операторы:
? EEPROM - позволяет загружать в EEPROM переменные величины,
используемые программой до ее загрузки с ПК;
? READ - считывает значения переменных величин;
? WRITE-записываетданныс в EEPROM;
? PAUSE - позволяет задать паузу (задержку) от О до 655.S5 мс в ходе
выполнения программы;
? NAP - переводит микроконтроллер в slccp-режим на указанное короткое
(не более 2,3 с) время. В .этом режиме нотребле1Н1е Stamp потребляет
ток всего в 20 мкЛ;


МИКРОКОНТРОЛЛЕР STAMP


ПРИМЕРЫ ПРИМЕНЕИЙ





? SLEEP -аналогичен NAP, но предназначен для больших нромсжут-кои
времени (до 65535 с);
? END - позволяет входить в sleep-режим на неопределенный срок;
микросхема «просьниется», когда поступает запрос от IIK;
? DEBUG - позиоляет носьшать и ПК содержимое переменных величин
нро1раммы в процессе отладки.
Как видно из приведенного перечня, те операторы Basic, которые
используются в программах для IIK, обладающих большой оперативной
памятью, в Fliasic отсутствуют. Зато есть многочисленные операторы,
характерные именно для микроконтроллеров (например, BUTTON, SOUND,
РОТ и др.), что позволяет сократить объем кода вашего приложения.
На рис. 6.4 показан пример, который хорошо иллюстрир\'ет действие этих
операторов. Схема считывает значение потенциометра (или любого
эквивалентного неремешюго резистора) и генерирует тем более высокий
звук, чем ниже его сонротивленис. Для этого нужно только четыре
оператора:
? boucle: pot 0,100, Ь2 - считывает значение сопротивления по
тенциометра, подключенного к выводу О, и сохраняет получен
ное значение в переменной величине Ь2;



? Ь2 = Ь2 / 2 - делит Ь2 па 2 для того, чтобы это значение не выходило за
пределы от О до 128, допуст! 1мые для следующе1о онера-тора;
? sound I, (Ь2, 10)-генерируетнавыводе1 звуковой сигнал, частота
которого определяется содержимым Ь2, длительность -значением 10;
? goto boucle-возвращает программу к начачу.
Конечно, этот пример не имеет практической пользы, но он хорошо
показывает, как операторы PBasic обеспечивают взаимодействие платы
Stamp к подключаемым внешним устройствам.
ПРИМЕРЫ ПРИМЕНЕНИЙ
Теперь рассмотрим несколько примеров применения Stamp. Как вы увидите,
несмотря па малый размер дост)'ппой памяти д;ш храпения нро1'рам.м этот
микроконтроллер позволяет реализоиывать доста-ТОЧ1Ю сложные
алгоритмы.
Три приведенных ниже примера посл)жат вам основой для создания себе
гвепиых приложений.
Ансшого-цифровое преобразование
Первый пример демонстрирует преобразование аналоговых величин в
цифровую форму (восьмиразрядные числа) и их передачу через
последовательный интерфейс RS232 на какое-либо устройство.
Учитывая ограпиче1Н1ое количество линий ввода/вывода PIC 16С56 (и
платы Stamp), рекомендуется П1>именять аналого-цифровой
преобразователь с последовательным интерфейсом. К счастью, такие
преобразователи широко распространены, причем тин носле-довательно1-о
интерфейса может быть как стандартным (Microwire, PC), так и
специфичным. Некоторые преобразователи могут практически напрямую
подключаться к плате Stamp.
На рис. 6.5 представлена схема, где используется микросхема АЦП
типаЛВС0831 фирмы National Semiconductor, являющаяся восьмиразрядным
аналого-цифровым преобразователем с носледователь-ны.м интерфейсом
типа Microwire. Это тот же преобразователь, па примере которого в главе 3
демонстрировался принцип реализг1ции последовательного ннтсрфе1"1са.


ПРИМЕРЫ ПРИМЕНЕНИЙ
Подпрограмма conv наиболее интересна. С ее помощью мж11о уп-
равлять iiTI-равлением
реле.
Для травления достаточно использовать две линии платы Stamp,
остальные могут применяться для др)тих целей. Если вы внимательно
рассмотрите габл.6.2, вы заметите, что напряжение, П1Л1Ложеш1()е к
обмоткам 1 и 4 всегда обратно том\', что приложено к обмоткам 2 и 3
соответственно. Достаточно, таким образом, электрически переклю-
читьсигналы, приложенные к обмоткам 1 и4, чтобыут1равлятьобмот-
к, указав нанраиле-iHie врагцения (+ или -),
количество шагов и скорость вращения (она определяется 1Н1Тсрвалом
между шагами, заданным в мнллисекуи-д^ьх). Таким образом, строка step >
+100 10 запраишвает 100шагов вращения в направлении по часовой стрелке
через 10 мс каждый.
Иыполпепие команды люжегбыть инициировано нажатием клавиши
возлрата каретки на тсрмишшыюм устройстве, к которому подключено Bauie
устройство. Устройство будет готово к исполне-1Н1Ю новой команды после
завершения предыдущей. Иге команды, пост)'пившие до повторного
появления вызова, игнорируются.
Пигтинг А 9


goto Prompt ?? Индикация Prompt. Принимаем команду,
определяющую направление вращения (+ или -), число шагов и интервал
между шагами (в миллисекундах).
Получение команды.
То же направпение? Начапо,
или инверсия направления?
Сгк): serin 7, N2400,01г_сш(). «Steps, «Delay if
Dir_Cmd = Directn then Stepit Ы =
ЬГ9Ь00000011
Stepit: for i = 1 to Steps ' Число шагов.
исключающее KilK с Ы для определения направления,
чтобы генерировать различные шаги. Ожидание
заданного интервала мевду шагами.
pins = pins'bl
Ы = Ы"9Ь00000011
pause Delay
next
Directn = Dir cmd
'Новое направление.
Индикация готовности и символы
'возврата каретки и перевода строки.
Prompt: serout 6,N2400,(10,13. "step)")
goto Cmd
Первые строки програм.мы резервируют память для различных
неремсниых величин. Возможно зарезервировать память дчя байтовых (ЬО) и
двухбайтовых (w1 и w2) величин (\v, для Word).
Затем переходим к инициализации портов ввода/вывода и определению
значешн! nepeMcnnoi'i велнчипы Directn. Нодпрогра.мма Prompt вызывается
для того, чтобы послать вызов иа Tejj.vnnia;i, подключенный к ycTpoiicTBy.
Еще раз обратите внимание иа возможности оператора последовательного
вывода SEROUT. И одной строке назначается порт вывода, задается скорость
передачи, задается последовательность передачи из трех символов (перевс)Д
строки -10, возврат каретки - 13 и вызов "step>").
Отметьте также, что, как и в предыдущей программе, необходимо
заменять символ N в этом операторе на символ Т, если вы используете
специализированную ИС приемопередатчика МАХ232 или МАХ233для
согласования уровнен интерфе1'1са KS232.
Подпрограмма Cmd обеспечивает прием команд и данных от терминала.
Данные использ)тотся для определения переменных величин D1 r_Cm(j, Steps
и Delay. 11рием осуществляет оператор Serin.
При необходимости можно изменить направление вращения, и затем
выполнить подпрограмму вращения. Она В1с;1ючаст в себя цикл for-next,
ВЫ1ЮЛНЯЮЩ11Й3a;iaHHoeко^шчество шагов. 1еперация управляющих
кодов шагов (в соответс твии с табл. 6.2) осуществляется с помощью
оператора, ре;ин1зующе10 логическую функцию «исключающее ИЛИ» и
инверсии.


МИКРОКОНТРОЛЛЕР STAMP
Как и в предыдущем сл)'чае, программа ос гаиляет свободной при-
близительно три четверти npor|)aM.MHoii памяти платы Stamp.
Интерфейс клавиатуры
и индикатора на жидких кристаллах
Очень мнопгс ycTpoficTBa на базе мшсроконтроллсров используют
клавиатуру и индикатор, через которые обеспечивается взаимодействие с
пользователем.
Индикаторы на жидких кристалл;1Х, содержащие одн)- или несколько
строк с числом знаков от 4 до 40, применяются повсеместно. R качестве
последнего примера вам предлагается программа уиравлепня таким
индикатором и клавиатурой с четырьмя клавишами. Вы сможете
использовать это устройство во мпоги.х своих приложениях.
В целом предлагаемое устройство на базе платы Stamp похоже на то, о
котором говорилось в главе 3 и которое было запрограммировано на
ассемблере.
Схема устройсту^а приведена на рис. 6.9. Она использует индикатор на
жидких криста-члах с конт})оллером серии 44780 фирмы Hitachi. К этой
схеме могут быть адаптированы многие индикаторы подобного типа,
необходи.мо будет лишь незначительно изменить приводимую программу в
разделе нпициллизации.
Четыре клавиши прел\'смотрены для ответа на запросы сие 1емы, к
которой они подключены через двунаправлетгьш последовательный
асинхронны!! интерфейс. Устройство, таким образо.м, функционирует в
качестве микротерминала: запросы, посланные внешним устройством,
отображаются индикатором на жидких кристаллах. Когда внешнее
устройство посылает символ возврата каретки, вы должны ответить нажатием
одной из четырех клавиш.
Приведенный пример очень абстрактен и вряд ли сможет где-то
применяться в предлагаемом виде. Однако решения, положенные в его
основу, помо1-ут вам при разработке многих устройств.
Полный текст программы содержится в листинге 6..S. Главная иро-гра.м.ча
расположена по адресу main. Она ожидает иостуилеши! символов по
последовательному интерфе11су и посылает их в подпрограмму обработки
backspace, которая осуществляет декодирование управляющих символов. Eoni
получен си.миол backspace, то он иост)--нает на индикатор и .затем гаснет, а
курсор перемещается на одну позицию, как в настоящем терминале. Если
пол)''1сн символ Cancel (Control - С), экран 1П11Икатора гаснет.
Неотобр;1жае.мые символы


let dirs = %1111111
goto main
МИКРОКОНТРОЛЛЕР STAMP
Возвращает входы/вьходь в их начальное состояние.


ПРИЛОЖЕНИЕ





Подпрограмма out вызывается, чтобы послать символ на индикатор и
возвратиться затем в главную программу.
Важная часть программы - подпрограмма i_LCD - служит д;1я ини-
циализации и задания параметров индикатора. Она должна быть изменена в
случае, если вы применяете не совместим)10 с данной модель индикатора.
Изучение теХ1»1ческой док)^1ентацип позволит вам выполнить
необходимые изменения.
Подпрограммы back и clear осуществляют возврат в основтпто про-
грамлгу и «очистку» экрана индикатора.
С помощью подпрограммы с ret изменяются назпачегшя линий
входов/выходов нлать[ Stamp, чтобы обеспечить передачу ответа при
нажатии клавиши.


ФАЙЛ ИДЕНТИФИКАТОРОВ
Многочисленные листинги, нредставле1П1ые в этой книге, посредством
директивы include используют файлы типовых идентификаторов
PICREG.EQU и MPREG.H. Эти фаш1ы идентичны, их содержимое
приведено ниже.
В диалоговом окне ассемблера есть опция, запрещающая различение
стро»н1ых и прописных букв в идентификаторах, и соответствующая ей
директива (/I) для программ. Рекомендуем ее использовать, чтобы избежать
проблем при ассемблировании, поскольку из-за различного происхождения
файлов-источников, представленных в книге, обозначения некоторых
стандартных идентификаторов иногда различаются (PORT_A vum Port_A,
например).
 
Сайт управляется системой uCoz